home *** CD-ROM | disk | FTP | other *** search
/ The Atari Compendium / The Atari Compendium (Toad Computers) (1994).iso / files / prgtools / programm.ing / m2posx10.zoo / m2posix.10 / src / oscalls.ipp < prev    next >
Encoding:
Modula Implementation  |  1993-11-11  |  19.7 KB  |  788 lines

  1. IMPLEMENTATION MODULE OSCALLS;
  2. __IMP_SWITCHES__
  3. #ifdef HM2
  4. #ifdef __LONG_WHOLE__
  5. (*$!i+: Modul muss mit $i- uebersetzt werden! *)
  6. (*$!w+: Modul muss mit $w- uebersetzt werden! *)
  7. #else
  8. (*$!i-: Modul muss mit $i+ uebersetzt werden! *)
  9. (*$!w-: Modul muss mit $w+ uebersetzt werden! *)
  10. #endif
  11. #endif
  12. (*****************************************************************************)
  13. (* 30-Okt-93, Holger Kleinschmidt                                            *)
  14. (*****************************************************************************)
  15.  
  16. CAST_IMPORT
  17. VAL_INTRINSIC
  18. OSCALL_IMPORT
  19.  
  20. FROM SYSTEM IMPORT
  21. (* TYPE *) ADDRESS;
  22. #if (defined LPRM2) || (defined SPCM2)
  23. FROM SYSTEM IMPORT ADR;
  24. #endif
  25.  
  26. FROM PORTAB IMPORT
  27. (* CONST*) NULL,
  28. (* TYPE *) UNSIGNEDWORD, SIGNEDWORD, UNSIGNEDLONG, SIGNEDLONG, ANYLONG,
  29.            ANYWORD, WORDSET;
  30.  
  31. #define __OSCALLS__ /* Keine Stackkorrektur fuer LPR und TDI */
  32. #include "oscalls.m2h"
  33.  
  34. (*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*)
  35.  
  36. CONST
  37.   EOKL = LIC(0);
  38.  
  39. (*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*)
  40.  
  41. PROCEDURE Supexec(proc:PROC);
  42. BEGIN
  43. #if (defined LPRM2) || (defined SPCM2)
  44.  supexec(VAL(LONGCARD,proc));
  45. #else
  46.  supexec(proc);
  47. #endif
  48. END Supexec;
  49.  
  50. (*---------------------------------------------------------------------------*)
  51.  
  52. PROCEDURE Setexc(vec:CARDINAL;adr:ADDRESS):ADDRESS;
  53. VAR old:ADDRESS;
  54. BEGIN
  55.  setexc(vec,adr,old);
  56.  RETURN(old);
  57. END Setexc;
  58.  
  59. (*---------------------------------------------------------------------------*)
  60.  
  61. PROCEDURE Dsetdrv(drv:CARDINAL):UNSIGNEDLONG;
  62. VAR drives:UNSIGNEDLONG;
  63. BEGIN
  64.  d_setdrv(drv,drives);
  65.  RETURN(drives);
  66. END Dsetdrv;
  67.  
  68. (*---------------------------------------------------------------------------*)
  69.  
  70. PROCEDURE Dgetdrv():CARDINAL;
  71. VAR wres:UNSIGNEDWORD;
  72. BEGIN
  73.  d_getdrv(wres);
  74.  RETURN(VAL(CARDINAL,wres));
  75. END Dgetdrv;
  76.  
  77. (*---------------------------------------------------------------------------*)
  78.  
  79. PROCEDURE Fsetdta(dta:ADDRESS);
  80. BEGIN
  81.  f_setdta(dta);
  82. END Fsetdta;
  83.  
  84. (*---------------------------------------------------------------------------*)
  85.  
  86. PROCEDURE Super(dat:UNSIGNEDLONG):SIGNEDLONG;
  87. VAR val:SIGNEDLONG;
  88. BEGIN
  89.  s_uper(dat,val);
  90.  RETURN(val);
  91. END Super;
  92.  
  93. (*---------------------------------------------------------------------------*)
  94.  
  95. PROCEDURE Tgetdate():WORDSET;
  96. VAR date:UNSIGNEDWORD;
  97. BEGIN
  98.  t_getdate(date);
  99.  RETURN(CAST(WORDSET,date));
  100. END Tgetdate;
  101.  
  102. (*---------------------------------------------------------------------------*)
  103.  
  104. PROCEDURE Tsetdate(date:ANYWORD):BOOLEAN;
  105. VAR wres:SIGNEDWORD;
  106. BEGIN
  107.  t_setdate(date,wres);
  108.  RETURN(wres=0);
  109. END Tsetdate;
  110.  
  111. (*---------------------------------------------------------------------------*)
  112.  
  113. PROCEDURE Tgettime():WORDSET;
  114. VAR time:UNSIGNEDWORD;
  115. BEGIN
  116.  t_gettime(time);
  117.  RETURN(CAST(WORDSET,time));
  118. END Tgettime;
  119.  
  120. (*---------------------------------------------------------------------------*)
  121.  
  122. PROCEDURE Tsettime(time:ANYWORD):BOOLEAN;
  123. VAR wres:SIGNEDWORD;
  124. BEGIN
  125.  t_settime(time,wres);
  126.  RETURN(wres=0);
  127. END Tsettime;
  128.  
  129. (*---------------------------------------------------------------------------*)
  130.  
  131. PROCEDURE Fgetdta():ADDRESS;
  132. VAR dta:ADDRESS;
  133. BEGIN
  134.  f_getdta(dta);
  135.  RETURN(dta);
  136. END Fgetdta;
  137.  
  138. (*---------------------------------------------------------------------------*)
  139.  
  140. PROCEDURE Sversion():CARDINAL;
  141. VAR vers:UNSIGNEDWORD;
  142. BEGIN
  143.  s_version(vers);
  144.  RETURN(VAL(CARDINAL,vers));
  145. END Sversion;
  146.  
  147. (*---------------------------------------------------------------------------*)
  148.  
  149. PROCEDURE Dcreate(dir:ADDRESS;VAR res:INTEGER):BOOLEAN;
  150. VAR wres:SIGNEDWORD;
  151. BEGIN
  152.  d_create(dir,wres);
  153.  res:=INT(wres);
  154.  RETURN(wres>=0);
  155. END Dcreate;
  156.  
  157. (*---------------------------------------------------------------------------*)
  158.  
  159. PROCEDURE Ddelete(dir:ADDRESS;VAR res:INTEGER):BOOLEAN;
  160. VAR wres:SIGNEDWORD;
  161. BEGIN
  162.  d_delete(dir,wres);
  163.  res:=INT(wres);
  164.  RETURN(wres>=0);
  165. END Ddelete;
  166.  
  167. (*---------------------------------------------------------------------------*)
  168.  
  169. PROCEDURE Dsetpath(dir:ADDRESS;VAR res:INTEGER):BOOLEAN;
  170. VAR wres:SIGNEDWORD;
  171. BEGIN
  172.  d_setpath(dir,wres);
  173.  res:=INT(wres);
  174.  RETURN(wres>=0);
  175. END Dsetpath;
  176.  
  177. (*---------------------------------------------------------------------------*)
  178.  
  179. PROCEDURE Fcreate(file:ADDRESS;attr:ANYWORD;VAR hndl:INTEGER):BOOLEAN;
  180. VAR lres:SIGNEDLONG;
  181. BEGIN
  182.  f_create(file,attr,lres);
  183.  hndl:=VAL(INTEGER,lres);
  184.  RETURN(lres>=EOKL);
  185. END Fcreate;
  186.  
  187. (*---------------------------------------------------------------------------*)
  188.  
  189. PROCEDURE Fopen(file:ADDRESS;mode:ANYWORD;VAR hndl:INTEGER):BOOLEAN;
  190. VAR lres:SIGNEDLONG;
  191. BEGIN
  192.  f_open(file,mode,lres);
  193.  hndl:=VAL(INTEGER,lres);
  194.  RETURN(lres>=EOKL);
  195. END Fopen;
  196.  
  197. (*---------------------------------------------------------------------------*)
  198.  
  199. PROCEDURE Fclose(hndl:INTEGER;VAR res:INTEGER):BOOLEAN;
  200. VAR wres:SIGNEDWORD;
  201. BEGIN
  202.  f_close(hndl,wres);
  203.  res:=INT(wres);
  204.  RETURN(wres>=0);
  205. END Fclose;
  206.  
  207. (*---------------------------------------------------------------------------*)
  208.  
  209. PROCEDURE Fread(hndl:INTEGER;len:UNSIGNEDLONG;buf:ADDRESS;VAR cnt:SIGNEDLONG):BOOLEAN;
  210. BEGIN
  211.  f_read(hndl,len,buf,cnt);
  212.  RETURN(cnt>=EOKL);
  213. END Fread;
  214.  
  215. (*---------------------------------------------------------------------------*)
  216.  
  217. PROCEDURE Fwrite(hndl:INTEGER;len:UNSIGNEDLONG;buf:ADDRESS;VAR cnt:SIGNEDLONG):BOOLEAN;
  218. BEGIN
  219.  f_write(hndl,len,buf,cnt);
  220.  RETURN(cnt>=EOKL);
  221. END Fwrite;
  222.  
  223. (*---------------------------------------------------------------------------*)
  224.  
  225. PROCEDURE Fdelete(file:ADDRESS;VAR res:INTEGER):BOOLEAN;
  226. VAR wres:SIGNEDWORD;
  227. BEGIN
  228.  f_delete(file,wres);
  229.  res:=INT(wres);
  230.  RETURN(wres>=0);
  231. END Fdelete;
  232.  
  233. (*---------------------------------------------------------------------------*)
  234.  
  235. PROCEDURE Fseek(off:SIGNEDLONG;hndl:INTEGER;mode:CARDINAL;VAR pos:SIGNEDLONG):BOOLEAN;
  236. BEGIN
  237.  f_seek(off,hndl,mode,pos);
  238.  RETURN(pos>=EOKL);
  239. END Fseek;
  240.  
  241. (*---------------------------------------------------------------------------*)
  242.  
  243. PROCEDURE Fattrib(file:ADDRESS;flag:CARDINAL;attr:ANYWORD;VAR old:WORDSET):BOOLEAN;
  244. VAR lres:SIGNEDLONG;
  245. BEGIN
  246.  f_attrib(file,flag,attr,lres);
  247.  old:=CAST(WORDSET,VAL(UNSIGNEDWORD,lres));
  248.  RETURN(lres>=EOKL);
  249. END Fattrib;
  250.  
  251. (*---------------------------------------------------------------------------*)
  252.  
  253. PROCEDURE Mxalloc(size:SIGNEDLONG;mode:ANYWORD;VAR adr:ADDRESS):BOOLEAN;
  254. BEGIN
  255.  m_xalloc(size,mode,adr);
  256.  RETURN(adr<>NULL);
  257. END Mxalloc;
  258.  
  259. (*---------------------------------------------------------------------------*)
  260.  
  261. PROCEDURE Fdup(std:INTEGER;VAR hndl:INTEGER):BOOLEAN;
  262. VAR lres:SIGNEDLONG;
  263. BEGIN
  264.  f_dup(std,lres);
  265.  hndl:=VAL(INTEGER,lres);
  266.  RETURN(lres>=EOKL);
  267. END Fdup;
  268.  
  269. (*---------------------------------------------------------------------------*)
  270.  
  271. PROCEDURE Fforce(std:INTEGER;hndl:INTEGER;VAR res:INTEGER):BOOLEAN;
  272. VAR wres:SIGNEDWORD;
  273. BEGIN
  274.  f_force(std,hndl,wres);
  275.  res:=VAL(INTEGER,wres);
  276.  RETURN(wres>=0);
  277. END Fforce;
  278.  
  279. (*---------------------------------------------------------------------------*)
  280.  
  281. PROCEDURE Dgetpath(buf:ADDRESS;drv:CARDINAL;VAR res:INTEGER):BOOLEAN;
  282. VAR wres:SIGNEDWORD;
  283. BEGIN
  284.  d_getpath(buf,drv,wres);
  285.  res:=VAL(INTEGER,wres);
  286.  RETURN(wres>=0);
  287. END Dgetpath;
  288.  
  289. (*---------------------------------------------------------------------------*)
  290.  
  291. PROCEDURE Malloc(size:SIGNEDLONG;VAR adr:ADDRESS):BOOLEAN;
  292. BEGIN
  293.  m_alloc(size,adr);
  294.  RETURN(adr<>NULL);
  295. END Malloc;
  296.  
  297. (*---------------------------------------------------------------------------*)
  298.  
  299. PROCEDURE Mfree(adr:ADDRESS;VAR res:INTEGER):BOOLEAN;
  300. VAR wres:SIGNEDWORD;
  301. BEGIN
  302.  m_free(adr,wres);
  303.  res:=INT(wres);
  304.  RETURN(wres>=0);
  305. END Mfree;
  306.  
  307. (*---------------------------------------------------------------------------*)
  308.  
  309. PROCEDURE Mshrink(adr:ADDRESS;size:SIGNEDLONG;VAR res:INTEGER):BOOLEAN;
  310. VAR wres:SIGNEDWORD;
  311. BEGIN
  312.  m_shrink(adr,size,wres);
  313.  res:=INT(wres);
  314.  RETURN(wres>=0);
  315. END Mshrink;
  316.  
  317. (*---------------------------------------------------------------------------*)
  318.  
  319. PROCEDURE Pexec(mode:CARDINAL;prog:ADDRESS;tail:ADDRESS;env:ADDRESS;VAR res:SIGNEDLONG):BOOLEAN;
  320. BEGIN
  321.  p_exec(mode,prog,tail,env,res);
  322.  IF (mode = 3) OR (mode = 5) OR (mode = 7) THEN
  323.    RETURN(res >= EOKL);
  324.  ELSE
  325.    RETURN(TRUE);
  326.  END;
  327. END Pexec;
  328.  
  329. (*---------------------------------------------------------------------------*)
  330.  
  331. PROCEDURE Pterm(ret:INTEGER);
  332. BEGIN
  333.  p_term(ret);
  334. END Pterm;
  335.  
  336. (*---------------------------------------------------------------------------*)
  337.  
  338. PROCEDURE Fsfirst(file:ADDRESS;attr:ANYWORD;VAR res:INTEGER):BOOLEAN;
  339. VAR wres:SIGNEDWORD;
  340. BEGIN
  341.  f_sfirst(file,attr,wres);
  342.  res:=INT(wres);
  343.  RETURN(wres>=0);
  344. END Fsfirst;
  345.  
  346. (*---------------------------------------------------------------------------*)
  347.  
  348. PROCEDURE Fsnext(VAR res:INTEGER):BOOLEAN;
  349. VAR wres:SIGNEDWORD;
  350. BEGIN
  351.  f_snext(wres);
  352.  res:=INT(wres);
  353.  RETURN(wres>=0);
  354. END Fsnext;
  355.  
  356. (*---------------------------------------------------------------------------*)
  357.  
  358. PROCEDURE Frename(old:ADDRESS;new:ADDRESS;VAR res:INTEGER):BOOLEAN;
  359. VAR wres:SIGNEDWORD;
  360. BEGIN
  361.  f_rename(old,new,wres);
  362.  res:=INT(wres);
  363.  RETURN(wres>=0);
  364. END Frename;
  365.  
  366. (*---------------------------------------------------------------------------*)
  367.  
  368. PROCEDURE Fdatime(datime:ADDRESS;hndl:INTEGER;flag:CARDINAL);
  369. BEGIN
  370.  f_datime(datime,hndl,flag);
  371. END Fdatime;
  372.  
  373. (*---------------------------------------------------------------------------*)
  374.  
  375. PROCEDURE Flock(hndl:INTEGER;mode:CARDINAL;from:UNSIGNEDLONG;len:UNSIGNEDLONG;VAR res:INTEGER):BOOLEAN;
  376. VAR wres:SIGNEDWORD;
  377. BEGIN
  378.  f_lock(hndl,mode,from,len,wres);
  379.  res:=INT(wres);
  380.  RETURN(wres>=0);
  381. END Flock;
  382.  
  383. (*---------------------------------------------------------------------------*)
  384.  
  385. PROCEDURE Syield;
  386. BEGIN
  387.  s_yield();
  388. END Syield;
  389.  
  390. (*---------------------------------------------------------------------------*)
  391.  
  392. PROCEDURE Fpipe(buf:ADDRESS;VAR res:INTEGER):BOOLEAN;
  393. VAR wres:SIGNEDWORD;
  394. BEGIN
  395.  f_pipe(buf,wres);
  396.  res:=INT(wres);
  397.  RETURN(wres>=0);
  398. END Fpipe;
  399.  
  400. (*---------------------------------------------------------------------------*)
  401.  
  402. PROCEDURE Fcntl(hndl:INTEGER;arg:ANYLONG;cmd:CARDINAL;VAR res:SIGNEDLONG):BOOLEAN;
  403. BEGIN
  404.  f_cntl(hndl,arg,cmd,res);
  405.  RETURN(res>=EOKL);
  406. END Fcntl;
  407.  
  408. (*---------------------------------------------------------------------------*)
  409.  
  410. PROCEDURE Pwait(VAR res:SIGNEDLONG):BOOLEAN;
  411. BEGIN
  412.  p_wait(res);
  413.  RETURN(res>=EOKL);
  414. END Pwait;
  415.  
  416. (*---------------------------------------------------------------------------*)
  417.  
  418. PROCEDURE Pgetpid():INTEGER;
  419. VAR wres:UNSIGNEDWORD;
  420. BEGIN
  421.  p_getpid(wres);
  422.  RETURN(VAL(INTEGER,wres));
  423. END Pgetpid;
  424.  
  425. (*---------------------------------------------------------------------------*)
  426.  
  427. PROCEDURE Pgetppid():INTEGER;
  428. VAR wres:UNSIGNEDWORD;
  429. BEGIN
  430.  p_getppid(wres);
  431.  RETURN(VAL(INTEGER,wres));
  432. END Pgetppid;
  433.  
  434. (*---------------------------------------------------------------------------*)
  435.  
  436. PROCEDURE Pgetpgrp():INTEGER;
  437. VAR wres:UNSIGNEDWORD;
  438. BEGIN
  439.  p_getpgrp(wres);
  440.  RETURN(VAL(INTEGER,wres));
  441. END Pgetpgrp;
  442.  
  443. (*---------------------------------------------------------------------------*)
  444.  
  445. PROCEDURE Psetpgrp(pid:INTEGER;grp:INTEGER;VAR res:INTEGER):BOOLEAN;
  446. VAR wres:SIGNEDWORD;
  447. BEGIN
  448.  p_setpgrp(pid,grp,wres);
  449.  res:=VAL(INTEGER,wres);
  450.  RETURN(wres>=0);
  451. END Psetpgrp;
  452.  
  453. (*---------------------------------------------------------------------------*)
  454.  
  455. PROCEDURE Pgetuid():UNSIGNEDWORD;
  456. VAR wres:UNSIGNEDWORD;
  457. BEGIN
  458.  p_getuid(wres);
  459.  RETURN(wres);
  460. END Pgetuid;
  461.  
  462. (*---------------------------------------------------------------------------*)
  463.  
  464. PROCEDURE Psetuid(uid:UNSIGNEDWORD;VAR res:INTEGER):BOOLEAN;
  465. VAR wres:SIGNEDWORD;
  466. BEGIN
  467.  p_setuid(uid,wres);
  468.  res:=INT(wres);
  469.  RETURN(wres>=0);
  470. END Psetuid;
  471.  
  472. (*---------------------------------------------------------------------------*)
  473.  
  474. PROCEDURE Pkill(pid:INTEGER;sig:CARDINAL;VAR res:INTEGER):BOOLEAN;
  475. VAR wres:SIGNEDWORD;
  476. BEGIN
  477.  p_kill(pid,sig,wres);
  478.  res:=INT(wres);
  479.  RETURN(wres>=0);
  480. END Pkill;
  481.  
  482. (*---------------------------------------------------------------------------*)
  483.  
  484. PROCEDURE Psignal(sig:CARDINAL;handler:ADDRESS;VAR old:ADDRESS):BOOLEAN;
  485. BEGIN
  486.  p_signal(sig,handler,old);
  487.  RETURN(CAST(SIGNEDLONG,old)>=EOKL);
  488. END Psignal;
  489.  
  490. (*---------------------------------------------------------------------------*)
  491.  
  492. PROCEDURE Pgetgid():UNSIGNEDWORD;
  493. VAR wres:UNSIGNEDWORD;
  494. BEGIN
  495.  p_getgid(wres);
  496.  RETURN(wres);
  497. END Pgetgid;
  498.  
  499. (*---------------------------------------------------------------------------*)
  500.  
  501. PROCEDURE Psetgid(gid:UNSIGNEDWORD;VAR res:INTEGER):BOOLEAN;
  502. VAR wres:SIGNEDWORD;
  503. BEGIN
  504.  p_setgid(gid,wres);
  505.  res:=INT(wres);
  506.  RETURN(wres>=0);
  507. END Psetgid;
  508.  
  509. (*---------------------------------------------------------------------------*)
  510.  
  511. PROCEDURE Psigblock(mask:UNSIGNEDLONG):UNSIGNEDLONG;
  512. VAR old:UNSIGNEDLONG;
  513. BEGIN
  514.  p_sigblock(mask,old);
  515.  RETURN(old);
  516. END Psigblock;
  517.  
  518. (*---------------------------------------------------------------------------*)
  519.  
  520. PROCEDURE Psigsetmask(mask:UNSIGNEDLONG):UNSIGNEDLONG;
  521. VAR old:UNSIGNEDLONG;
  522. BEGIN
  523.  p_sigsetmask(mask,old);
  524.  RETURN(old);
  525. END Psigsetmask;
  526.  
  527. (*---------------------------------------------------------------------------*)
  528.  
  529. PROCEDURE Pusrval(arg:SIGNEDLONG):SIGNEDLONG;
  530. VAR val:SIGNEDLONG;
  531. BEGIN
  532.  p_usrval(arg,val);
  533.  RETURN(val);
  534. END Pusrval;
  535.  
  536. (*---------------------------------------------------------------------------*)
  537.  
  538. PROCEDURE Pdomain(dom:INTEGER):INTEGER;
  539. VAR wres:SIGNEDWORD;
  540. BEGIN
  541.  p_domain(dom,wres);
  542.  RETURN(VAL(INTEGER,wres));
  543. END Pdomain;
  544.  
  545. (*---------------------------------------------------------------------------*)
  546.  
  547. PROCEDURE Psigreturn;
  548. BEGIN
  549.  p_sigreturn();
  550. END Psigreturn;
  551.  
  552. (*---------------------------------------------------------------------------*)
  553.  
  554. PROCEDURE Pfork():INTEGER;
  555. VAR wres:SIGNEDWORD;
  556. BEGIN
  557.  p_fork(wres);
  558.  RETURN(VAL(INTEGER,wres));
  559. END Pfork;
  560.  
  561. (*---------------------------------------------------------------------------*)
  562.  
  563. PROCEDURE Pwait3(flag:ANYWORD;rusage:ADDRESS;VAR res:SIGNEDLONG):BOOLEAN;
  564. BEGIN
  565.  p_wait3(flag,rusage,res);
  566.  RETURN(res>=EOKL);
  567. END Pwait3;
  568.  
  569. (*---------------------------------------------------------------------------*)
  570.  
  571. PROCEDURE Fselect(timeout:CARDINAL;rfds:ADDRESS;wfds:ADDRESS;xfds:ADDRESS;VAR res:INTEGER):BOOLEAN;
  572. VAR wres:SIGNEDWORD;
  573. BEGIN
  574.  f_select(timeout,rfds,wfds,xfds,wres);
  575.  res:=INT(wres);
  576.  RETURN(wres>=0);
  577. END Fselect;
  578.  
  579. (*---------------------------------------------------------------------------*)
  580.  
  581. PROCEDURE Prusage(rscadr:ADDRESS);
  582. BEGIN
  583.  p_rusage(rscadr);
  584. END Prusage;
  585.  
  586. (*---------------------------------------------------------------------------*)
  587.  
  588. PROCEDURE Talarm(secs:SIGNEDLONG):UNSIGNEDLONG;
  589. VAR old:UNSIGNEDLONG;
  590. BEGIN
  591.  t_alarm(secs,old);
  592.  RETURN(old);
  593. END Talarm;
  594.  
  595. (*---------------------------------------------------------------------------*)
  596.  
  597. PROCEDURE Pause;
  598. BEGIN
  599.  p_ause();
  600. END Pause;
  601.  
  602. (*---------------------------------------------------------------------------*)
  603.  
  604. PROCEDURE Sysconf(which:INTEGER;VAR val:SIGNEDLONG):BOOLEAN;
  605. BEGIN
  606.  s_ysconf(which,val);
  607.  RETURN(val>=EOKL);
  608. END Sysconf;
  609.  
  610. (*---------------------------------------------------------------------------*)
  611.  
  612. PROCEDURE Psigpending():UNSIGNEDLONG;
  613. VAR sigs:UNSIGNEDLONG;
  614. BEGIN
  615.  p_sigpending(sigs);
  616.  RETURN(sigs);
  617. END Psigpending;
  618.  
  619. (*---------------------------------------------------------------------------*)
  620.  
  621. PROCEDURE Dpathconf(path:ADDRESS;which:INTEGER;VAR val:SIGNEDLONG):BOOLEAN;
  622. BEGIN
  623.  d_pathconf(path,which,val);
  624.  RETURN(val>=EOKL);
  625. END Dpathconf;
  626.  
  627. (*---------------------------------------------------------------------------*)
  628.  
  629. PROCEDURE Dopendir(path:ADDRESS;flag:CARDINAL;VAR dir:UNSIGNEDLONG):BOOLEAN;
  630. BEGIN
  631.  d_opendir(path,flag,dir);
  632.  RETURN(dir<CAST(UNSIGNEDLONG,0FF000000H));
  633. END Dopendir;
  634.  
  635. (*---------------------------------------------------------------------------*)
  636.  
  637. PROCEDURE Dreaddir(len:CARDINAL;dir:UNSIGNEDLONG;buf:ADDRESS;VAR res:INTEGER):BOOLEAN;
  638. VAR wres:SIGNEDWORD;
  639. BEGIN
  640.  d_readdir(len,dir,buf,wres);
  641.  res:=INT(wres);
  642.  RETURN(wres>=0);
  643. END Dreaddir;
  644.  
  645. (*---------------------------------------------------------------------------*)
  646.  
  647. PROCEDURE Drewinddir(dir:UNSIGNEDLONG;VAR res:INTEGER):BOOLEAN;
  648. VAR wres:SIGNEDWORD;
  649. BEGIN
  650.  d_rewinddir(dir,wres);
  651.  res:=INT(wres);
  652.  RETURN(wres>=0);
  653. END Drewinddir;
  654.  
  655. (*---------------------------------------------------------------------------*)
  656.  
  657. PROCEDURE Dclosedir(dir:UNSIGNEDLONG;VAR res:INTEGER):BOOLEAN;
  658. VAR wres:SIGNEDWORD;
  659. BEGIN
  660.  d_closedir(dir,wres);
  661.  res:=INT(wres);
  662.  RETURN(wres>=0);
  663. END Dclosedir;
  664.  
  665. (*---------------------------------------------------------------------------*)
  666.  
  667. PROCEDURE Fxattr(flag:CARDINAL;file:ADDRESS;xattr:ADDRESS;VAR res:INTEGER):BOOLEAN;
  668. VAR wres:SIGNEDWORD;
  669. BEGIN
  670.  f_xattr(flag,file,xattr,wres);
  671.  res:=INT(wres);
  672.  RETURN(wres>=0);
  673. END Fxattr;
  674.  
  675. (*---------------------------------------------------------------------------*)
  676.  
  677. PROCEDURE Flink(old:ADDRESS;new:ADDRESS;VAR res:INTEGER):BOOLEAN;
  678. VAR wres:SIGNEDWORD;
  679. BEGIN
  680.  f_link(old,new,wres);
  681.  res:=INT(wres);
  682.  RETURN(wres>=0);
  683. END Flink;
  684.  
  685. (*---------------------------------------------------------------------------*)
  686.  
  687. PROCEDURE Fsymlink(old:ADDRESS;new:ADDRESS;VAR res:INTEGER):BOOLEAN;
  688. VAR wres:SIGNEDWORD;
  689. BEGIN
  690.  f_symlink(old,new,wres);
  691.  res:=INT(wres);
  692.  RETURN(wres>=0);
  693. END Fsymlink;
  694.  
  695. (*---------------------------------------------------------------------------*)
  696.  
  697. PROCEDURE Freadlink(bufsiz:CARDINAL;buf:ADDRESS;file:ADDRESS;VAR res:INTEGER):BOOLEAN;
  698. VAR wres:SIGNEDWORD;
  699. BEGIN
  700.  f_readlink(bufsiz,buf,file,wres);
  701.  res:=INT(wres);
  702.  RETURN(wres>=0);
  703. END Freadlink;
  704.  
  705. (*---------------------------------------------------------------------------*)
  706.  
  707. PROCEDURE Fchown(file:ADDRESS;uid:UNSIGNEDWORD;gid:UNSIGNEDWORD;VAR res:INTEGER):BOOLEAN;
  708. VAR wres:SIGNEDWORD;
  709. BEGIN
  710.  f_chown(file,uid,gid,wres);
  711.  res:=INT(wres);
  712.  RETURN(wres>=0);
  713. END Fchown;
  714.  
  715. (*---------------------------------------------------------------------------*)
  716.  
  717. PROCEDURE Fchmod(file:ADDRESS;mode:ANYWORD;VAR res:INTEGER):BOOLEAN;
  718. VAR wres:SIGNEDWORD;
  719. BEGIN
  720.  f_chmod(file,mode,wres);
  721.  res:=INT(wres);
  722.  RETURN(wres>=0);
  723. END Fchmod;
  724.  
  725. (*---------------------------------------------------------------------------*)
  726.  
  727. PROCEDURE Pumask(mode:ANYWORD):WORDSET;
  728. VAR old:UNSIGNEDWORD;
  729. BEGIN
  730.  p_umask(mode,old);
  731.  RETURN(CAST(WORDSET,old));
  732. END Pumask;
  733.  
  734. (*---------------------------------------------------------------------------*)
  735.  
  736. PROCEDURE Psigpause(sigmask:UNSIGNEDLONG);
  737. BEGIN
  738.  p_sigpause(sigmask);
  739. END Psigpause;
  740.  
  741. (*---------------------------------------------------------------------------*)
  742.  
  743. PROCEDURE Psigaction(sig:CARDINAL;act:ADDRESS;oact:ADDRESS;VAR res:INTEGER):BOOLEAN;
  744. VAR wres:SIGNEDWORD;
  745. BEGIN
  746.  p_sigaction(sig,act,oact,wres);
  747.  res:=INT(wres);
  748.  RETURN(wres>=0);
  749. END Psigaction;
  750.  
  751. (*---------------------------------------------------------------------------*)
  752.  
  753. PROCEDURE Pgeteuid():UNSIGNEDWORD;
  754. VAR wres:UNSIGNEDWORD;
  755. BEGIN
  756.  p_geteuid(wres);
  757.  RETURN(wres);
  758. END Pgeteuid;
  759.  
  760. (*---------------------------------------------------------------------------*)
  761.  
  762. PROCEDURE Pgetegid():UNSIGNEDWORD;
  763. VAR wres:UNSIGNEDWORD;
  764. BEGIN
  765.  p_getegid(wres);
  766.  RETURN(wres);
  767. END Pgetegid;
  768.  
  769. (*---------------------------------------------------------------------------*)
  770.  
  771. PROCEDURE Pwaitpid(pid:INTEGER;flag:ANYWORD;rusage:ADDRESS;VAR res:SIGNEDLONG):BOOLEAN;
  772. BEGIN
  773.  p_waitpid(pid,flag,rusage,res);
  774.  RETURN(res>=EOKL);
  775. END Pwaitpid;
  776.  
  777. (*---------------------------------------------------------------------------*)
  778.  
  779. PROCEDURE Dgetcwd(path:ADDRESS;drv:CARDINAL;size:CARDINAL;VAR res:INTEGER):BOOLEAN;
  780. VAR wres:SIGNEDWORD;
  781. BEGIN
  782.  d_getcwd(path,drv,size,wres);
  783.  res:=INT(wres);
  784.  RETURN(wres>=0);
  785. END Dgetcwd;
  786.  
  787. END OSCALLS.
  788.